package com.itheima.a01myfunction;

import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;

public class FunctionDemo1 {
    public static void main(String[] args) {

        Integer[] nums = {5, 2, 3, 4, 1, 6};

        // 匿名内部类
        // Arrays.sort(nums, new Comparator<Integer>() {
        //     @Override
        //     public int compare(Integer o1, Integer o2) {
        //         return o2-o1;
        //     }
        // });

        // lambda表达式
        // 因为第二个参数的类型Comparator是一个函数式接口
        // Arrays.sort(nums, (Integer o1, Integer o2) -> {
        //     return o2-o1;
        // });

        // lambda表达式简化
        // Arrays.sort(nums, (o1, o2) -> o2-o1);

        // 方法引用
        // 1. 引用处需要是函数式接口
        // 2. 被引用的方法需要已经存在
        // 3. 被引用方法的形参和返回值需要跟抽象方法的形参和返回值保持一致
        // 4. 被引用方法的功能需要满足当前的需求
        Arrays.sort(nums, FunctionDemo1::subtraction);
        System.out.println(Arrays.toString(nums));
    }

    public static int subtraction(int n1, int n2){
        return n2-n1;
    }
}
